Google, Facebook, এবং GitHub Login এর সাথে Integration

Java Technologies - স্প্রিং সিকিউরিটি (Spring Security) - Spring Security এবং Social Login Integration
174

স্প্রিং সিকিউরিটি দিয়ে আপনি সহজেই OAuth 2.0 ভিত্তিক সাইন-ইন সিস্টেম ইন্টিগ্রেট করতে পারেন, যেমন Google, Facebook, এবং GitHub। এই সমস্ত প্ল্যাটফর্ম OAuth 2.0 প্রটোকল ব্যবহার করে, যা একটি নিরাপদ অথেন্টিকেশন পদ্ধতি প্রদান করে। স্প্রিং সিকিউরিটি OAuth2 Login এবং OAuth2 Client সুবিধা দিয়ে তৃতীয় পক্ষের লগইন ইন্টিগ্রেট করা সহজ করে দেয়।

OAuth 2.0 Authentication Workflow:

  1. ব্যবহারকারী লগইন করতে চান এমন একটি সেবা (Google, Facebook, GitHub) নির্বাচন করেন।
  2. স্প্রিং সিকিউরিটি সেই সেবার OAuth2 সার্ভারে পাঠায় ব্যবহারকারীর অনুমতি চেয়ে।
  3. ব্যবহারকারী অনুমতি দিলে, স্প্রিং সিকিউরিটি সাফল্যের সাথে access token সংগ্রহ করে।
  4. এরপর, স্প্রিং সিকিউরিটি ব্যবহারকারীকে অ্যাপ্লিকেশনটির ভিতরে নিয়ে আসে।

কনফিগারেশন স্টেপস

1. ডিপেন্ডেন্সি যোগ করা

Spring Boot অ্যাপ্লিকেশন থেকে Google, Facebook, অথবা GitHub OAuth 2.0 এ লগইন করতে হলে, প্রথমে spring-boot-starter-oauth2-client ডিপেন্ডেন্সি যোগ করতে হবে।

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'

2. Google OAuth Integration

Google Developer Console-এ অ্যাপ্লিকেশন সেটআপ:

  1. Google Developer Console এ যান।
  2. নতুন একটি প্রজেক্ট তৈরি করুন।
  3. "OAuth 2.0 Client IDs" তৈরি করুন এবং Authorized Redirect URIs-এ http://localhost:8080/login/oauth2/code/google URLটি যুক্ত করুন।
  4. Client ID এবং Client Secret সংগ্রহ করুন।

আবশ্যক কনফিগারেশন:

application.yml বা application.properties ফাইলে Google এর OAuth 2.0 কনফিগারেশন যুক্ত করুন।

application.yml:

spring:
  security:
    oauth2:
      client:
        registration:
          google:
            client-id: <Your-Client-ID>
            client-secret: <Your-Client-Secret>
            scope:
              - profile
              - email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            authorization-grant-type: authorization_code
            client-name: Google
        provider:
          google:
            authorization-uri: https://accounts.google.com/o/oauth2/auth
            token-uri: https://oauth2.googleapis.com/token
            user-info-uri: https://www.googleapis.com/oauth2/v3/userinfo

3. Facebook OAuth Integration

Facebook Developer Console-এ অ্যাপ্লিকেশন সেটআপ:

  1. Facebook Developer Console এ যান।
  2. নতুন একটি অ্যাপ্লিকেশন তৈরি করুন।
  3. "Facebook Login" সেটআপ করুন এবং Valid OAuth Redirect URIshttp://localhost:8080/login/oauth2/code/facebook URLটি যুক্ত করুন।
  4. App ID এবং App Secret সংগ্রহ করুন।

কনফিগারেশন:

application.yml:

spring:
  security:
    oauth2:
      client:
        registration:
          facebook:
            client-id: <Your-Facebook-App-ID>
            client-secret: <Your-Facebook-App-Secret>
            scope:
              - email
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            authorization-grant-type: authorization_code
            client-name: Facebook
        provider:
          facebook:
            authorization-uri: https://www.facebook.com/dialog/oauth
            token-uri: https://graph.facebook.com/v9.0/oauth/access_token
            user-info-uri: https://graph.facebook.com/v9.0/me?fields=id,name,email

4. GitHub OAuth Integration

GitHub Developer Console-এ অ্যাপ্লিকেশন সেটআপ:

  1. GitHub Developer Console এ যান।
  2. একটি নতুন OAuth অ্যাপ্লিকেশন তৈরি করুন।
  3. Authorization callback URLhttp://localhost:8080/login/oauth2/code/github URLটি যুক্ত করুন।
  4. Client ID এবং Client Secret সংগ্রহ করুন।

কনফিগারেশন:

application.yml:

spring:
  security:
    oauth2:
      client:
        registration:
          github:
            client-id: <Your-GitHub-Client-ID>
            client-secret: <Your-GitHub-Client-Secret>
            scope:
              - read:user
            redirect-uri: "{baseUrl}/login/oauth2/code/{registrationId}"
            authorization-grant-type: authorization_code
            client-name: GitHub
        provider:
          github:
            authorization-uri: https://github.com/login/oauth/authorize
            token-uri: https://github.com/login/oauth/access_token
            user-info-uri: https://api.github.com/user

5. কাস্টম কনফিগারেশন (Optional)

স্প্রিং সিকিউরিটি এর মাধ্যমে কাস্টম ইউজার ডিটেইলস সংগ্রহ করা এবং কাস্টম AuthenticationSuccessHandler বা AuthenticationFailureHandler ব্যবহার করা যায়।

Custom Authentication Success Handler:

@Component
public class OAuth2AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request,
                                        HttpServletResponse response,
                                        Authentication authentication) throws IOException, ServletException {
        // Custom logic here (e.g. redirect or logging)
        super.onAuthenticationSuccess(request, response, authentication);
    }
}

Custom Authentication Failure Handler:

@Component
public class OAuth2AuthenticationFailureHandler implements AuthenticationFailureHandler {

    @Override
    public void onAuthenticationFailure(HttpServletRequest request, 
                                        HttpServletResponse response, 
                                        AuthenticationException exception) throws IOException {
        // Handle failure (e.g. logging or redirect to error page)
    }
}

6. Security Configuration

Spring Security কনফিগারেশন ফাইলে OAuth 2.0 সাপোর্ট সক্ষম করতে হবে। নিচের কনফিগারেশনটি আপনার অ্যাপ্লিকেশনটি বিভিন্ন OAuth2 সাইন-ইন সিস্টেমের সাথে ইন্টিগ্রেট করতে সাহায্য করবে।

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll() // Public access
                .anyRequest().authenticated()  // Other requests require authentication
            .and()
            .oauth2Login()  // Enable OAuth2 Login
            .and()
            .logout().permitAll();
    }
}

7. Run and Test

স্প্রিং বুট অ্যাপ্লিকেশন চালু করুন। ব্রাউজারে গিয়ে /login URL-এ ক্লিক করলে, আপনি নির্বাচিত সোশ্যাল মিডিয়া (Google, Facebook, GitHub) এর মাধ্যমে লগইন করার অপশন দেখতে পাবেন।


উপসংহার

Spring Security-এর মাধ্যমে Google, Facebook, এবং GitHub-এর সাথে OAuth2 সাইন-ইন ইন্টিগ্রেশন অত্যন্ত সহজ এবং সুরক্ষিত। OAuth 2.0 প্রোটোকল ব্যবহার করে আপনি সহজে তৃতীয় পক্ষের অথেন্টিকেশন ব্যবস্থা আপনার অ্যাপ্লিকেশনে যোগ করতে পারবেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...